{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# **Elliptic++ Transactions Dataset**\n",
        "\n",
        "\n",
        "---\n",
        "---\n",
        "\n",
        "\n",
        "Released by: Youssef Elmougy, Ling Liu\n",
        "\n",
        "\n",
        "\n",
        "School of Computer Science, Georgia Institute of Technology\n",
        "\n",
        "Contact: yelmougy3@gatech.edu\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "Github Repository: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)\n",
        "\n",
        "\n",
        "If you use our dataset in your work, please cite our paper:\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        ">> Youssef Elmougy and Ling Liu. 2023. Demystifying Fraudulent Transactions and Illicit Nodes in the Bitcoin Network for Financial Forensics.\n",
        "\n",
        "---\n",
        "\n"
      ],
      "metadata": {
        "id": "O34u-DVsX4jx"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## [SETUP] Import libraries and csv files "
      ],
      "metadata": {
        "id": "ReHrhaPiaiI-"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Download dataset from: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)"
      ],
      "metadata": {
        "id": "TLi0Zc7j6Rb6"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eUbJT_J-A1Mw",
        "outputId": "6e64f92e-3bac-4dbc-b4f2-d57489140473"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mounted at /content/drive\n"
          ]
        }
      ],
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/txs_features.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/txs_classes.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/txs_edgelist.csv ./"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kz7WtWhG6MtI",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "ba02acc2-6f29-4d71-c5df-2d6bc5c61453"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Requirement already satisfied: ipython in /usr/local/lib/python3.8/dist-packages (8.9.0)\n",
            "Requirement already satisfied: decorator in /usr/local/lib/python3.8/dist-packages (from ipython) (4.4.2)\n",
            "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.8/dist-packages (from ipython) (4.8.0)\n",
            "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.8/dist-packages (from ipython) (0.1.6)\n",
            "Requirement already satisfied: stack-data in /usr/local/lib/python3.8/dist-packages (from ipython) (0.6.2)\n",
            "Requirement already satisfied: jedi>=0.16 in /usr/local/lib/python3.8/dist-packages (from ipython) (0.18.2)\n",
            "Requirement already satisfied: traitlets>=5 in /usr/local/lib/python3.8/dist-packages (from ipython) (5.7.1)\n",
            "Requirement already satisfied: pickleshare in /usr/local/lib/python3.8/dist-packages (from ipython) (0.7.5)\n",
            "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.30 in /usr/local/lib/python3.8/dist-packages (from ipython) (3.0.36)\n",
            "Requirement already satisfied: backcall in /usr/local/lib/python3.8/dist-packages (from ipython) (0.2.0)\n",
            "Requirement already satisfied: pygments>=2.4.0 in /usr/local/lib/python3.8/dist-packages (from ipython) (2.6.1)\n",
            "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.8/dist-packages (from jedi>=0.16->ipython) (0.8.3)\n",
            "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.8/dist-packages (from pexpect>4.3->ipython) (0.7.0)\n",
            "Requirement already satisfied: wcwidth in /usr/local/lib/python3.8/dist-packages (from prompt-toolkit<3.1.0,>=3.0.30->ipython) (0.2.5)\n",
            "Requirement already satisfied: executing>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (1.2.0)\n",
            "Requirement already satisfied: asttokens>=2.1.0 in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (2.2.1)\n",
            "Requirement already satisfied: pure-eval in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (0.2.2)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.8/dist-packages (from asttokens>=2.1.0->stack-data->ipython) (1.15.0)\n"
          ]
        }
      ],
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns\n",
        "import networkx as nx\n",
        "import plotly.graph_objs as go \n",
        "import plotly.offline as py \n",
        "import math\n",
        "\n",
        "!pip install -U ipython \n",
        "from IPython.core.interactiveshell import InteractiveShell\n",
        "InteractiveShell.ast_node_interactivity = 'all'"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "from sklearn.metrics import precision_recall_fscore_support\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.neural_network import MLPClassifier\n",
        "from sklearn.metrics import f1_score, accuracy_score, confusion_matrix\n",
        "from sklearn.cluster import KMeans\n",
        "from sklearn.model_selection import GridSearchCV\n",
        "from sklearn.preprocessing import MinMaxScaler\n",
        "from sklearn.ensemble import VotingClassifier\n",
        "from sklearn.base import clone \n",
        "\n",
        "import xgboost as xgb"
      ],
      "metadata": {
        "id": "TKJFAkVLp34j"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "!pip install eli5\n",
        "import eli5\n",
        "from eli5.sklearn import PermutationImportance"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bRW1hh3S4pbS",
        "outputId": "af64ff37-eb12-4dd8-faba-628b9b695aec"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Collecting eli5\n",
            "  Downloading eli5-0.13.0.tar.gz (216 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m216.2/216.2 KB\u001b[0m \u001b[31m15.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "Requirement already satisfied: attrs>17.1.0 in /usr/local/lib/python3.8/dist-packages (from eli5) (22.2.0)\n",
            "Collecting jinja2>=3.0.0\n",
            "  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m133.1/133.1 KB\u001b[0m \u001b[31m15.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: numpy>=1.9.0 in /usr/local/lib/python3.8/dist-packages (from eli5) (1.21.6)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from eli5) (1.7.3)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.8/dist-packages (from eli5) (1.15.0)\n",
            "Requirement already satisfied: scikit-learn>=0.20 in /usr/local/lib/python3.8/dist-packages (from eli5) (1.0.2)\n",
            "Requirement already satisfied: graphviz in /usr/local/lib/python3.8/dist-packages (from eli5) (0.10.1)\n",
            "Requirement already satisfied: tabulate>=0.7.7 in /usr/local/lib/python3.8/dist-packages (from eli5) (0.8.10)\n",
            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2>=3.0.0->eli5) (2.0.1)\n",
            "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.20->eli5) (3.1.0)\n",
            "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.20->eli5) (1.2.0)\n",
            "Building wheels for collected packages: eli5\n",
            "  Building wheel for eli5 (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for eli5: filename=eli5-0.13.0-py2.py3-none-any.whl size=107748 sha256=138c7b7afc731dc3a39e6bd4e82b7a9fa2f965be699cbe7c19820bc09cf8bfa4\n",
            "  Stored in directory: /root/.cache/pip/wheels/85/ac/25/ffcd87ef8f9b1eec324fdf339359be71f22612459d8c75d89c\n",
            "Successfully built eli5\n",
            "Installing collected packages: jinja2, eli5\n",
            "  Attempting uninstall: jinja2\n",
            "    Found existing installation: Jinja2 2.11.3\n",
            "    Uninstalling Jinja2-2.11.3:\n",
            "      Successfully uninstalled Jinja2-2.11.3\n",
            "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
            "notebook 5.7.16 requires jinja2<=3.0.0, but you have jinja2 3.1.2 which is incompatible.\n",
            "google-colab 1.0.0 requires ipython~=7.9.0, but you have ipython 8.9.0 which is incompatible.\n",
            "flask 1.1.4 requires Jinja2<3.0,>=2.10.1, but you have jinja2 3.1.2 which is incompatible.\u001b[0m\u001b[31m\n",
            "\u001b[0mSuccessfully installed eli5-0.13.0 jinja2-3.1.2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Transactions Dataset Overview\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section loads the 3 csv files (txs_features, txs_classes, txs_edgelist) and provides a quick overview of the dataset structure and features."
      ],
      "metadata": {
        "id": "y3JLmL3SfJqP"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Load saved transactions dataset csv files:"
      ],
      "metadata": {
        "id": "ZcdjXmV8gr8S"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"\\nTransaction features: \\n\")\n",
        "df_txs_features = pd.read_csv(\"txs_features.csv\")\n",
        "df_txs_features\n",
        "\n",
        "print(\"\\nTransaction classes: \\n\")\n",
        "df_txs_classes = pd.read_csv(\"txs_classes.csv\")\n",
        "df_txs_classes\n",
        "\n",
        "print(\"\\nTransaction-Transaction edgelist: \\n\")\n",
        "df_txs_edgelist = pd.read_csv(\"txs_edgelist.csv\")\n",
        "df_txs_edgelist"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "dNNEwGmae2Eo",
        "outputId": "3ed76d40-095b-42dc-8362-5eb54958b88a"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Transaction features: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId  Time step  Local_feature_1  Local_feature_2  \\\n",
              "0            3321          1        -0.169615        -0.184668   \n",
              "1           11108          1        -0.137586        -0.184668   \n",
              "2           51816          1        -0.170103        -0.184668   \n",
              "3           68869          1        -0.114267        -0.184668   \n",
              "4           89273          1         5.202107        -0.210553   \n",
              "...           ...        ...              ...              ...   \n",
              "203764  158304003         49        -0.165622        -0.139563   \n",
              "203765  158303998         49        -0.167040        -0.139563   \n",
              "203766  158303966         49        -0.167040        -0.139563   \n",
              "203767  161526077         49        -0.172212        -0.139573   \n",
              "203768  194103537         49        -0.172212        -0.139573   \n",
              "\n",
              "        Local_feature_3  Local_feature_4  Local_feature_5  Local_feature_6  \\\n",
              "0             -1.201369        -0.121970        -0.043875        -0.113002   \n",
              "1             -1.201369        -0.121970        -0.043875        -0.113002   \n",
              "2             -1.201369        -0.121970        -0.043875        -0.113002   \n",
              "3             -1.201369         0.028105        -0.043875        -0.113002   \n",
              "4             -1.756361        -0.121970       260.090707        -0.113002   \n",
              "...                 ...              ...              ...              ...   \n",
              "203764         1.018602        -0.121970        -0.043875        -0.113002   \n",
              "203765         1.018602        -0.121970        -0.043875        -0.113002   \n",
              "203766         1.018602        -0.121970        -0.043875        -0.113002   \n",
              "203767         1.018602        -0.121970        -0.043875        -0.113002   \n",
              "203768         1.018602        -0.121970        -0.043875        -0.113002   \n",
              "\n",
              "        Local_feature_7  Local_feature_8  ...  in_BTC_min  in_BTC_max  \\\n",
              "0             -0.061584        -0.160199  ...    0.534072    0.534072   \n",
              "1             -0.061584        -0.127429  ...    5.611878    5.611878   \n",
              "2             -0.061584        -0.160699  ...    0.456608    0.456608   \n",
              "3              0.547008        -0.161652  ...    0.308900    8.000000   \n",
              "4             -0.061584         5.335864  ...  852.164680  852.164680   \n",
              "...                 ...              ...  ...         ...         ...   \n",
              "203764        -0.061584        -0.156113  ...         NaN         NaN   \n",
              "203765        -0.061584        -0.157564  ...         NaN         NaN   \n",
              "203766        -0.061584        -0.157564  ...         NaN         NaN   \n",
              "203767        -0.061584        -0.162856  ...         NaN         NaN   \n",
              "203768        -0.061584        -0.162856  ...         NaN         NaN   \n",
              "\n",
              "        in_BTC_mean  in_BTC_median  in_BTC_total   out_BTC_min  out_BTC_max  \\\n",
              "0          0.534072       0.534072      0.534072  1.668990e-01     0.367074   \n",
              "1          5.611878       5.611878      5.611878  5.861940e-01     5.025584   \n",
              "2          0.456608       0.456608      0.456608  2.279902e-01     0.228518   \n",
              "3          3.102967       1.000000      9.308900  1.229000e+00     8.079800   \n",
              "4        852.164680     852.164680    852.164680  1.300000e-07    41.264036   \n",
              "...             ...            ...           ...           ...          ...   \n",
              "203764          NaN            NaN           NaN           NaN          NaN   \n",
              "203765          NaN            NaN           NaN           NaN          NaN   \n",
              "203766          NaN            NaN           NaN           NaN          NaN   \n",
              "203767          NaN            NaN           NaN           NaN          NaN   \n",
              "203768          NaN            NaN           NaN           NaN          NaN   \n",
              "\n",
              "        out_BTC_mean  out_BTC_median  out_BTC_total  \n",
              "0           0.266986        0.266986       0.533972  \n",
              "1           2.805889        2.805889       5.611778  \n",
              "2           0.228254        0.228254       0.456508  \n",
              "3           4.654400        4.654400       9.308800  \n",
              "4           0.065016        0.000441     852.164680  \n",
              "...              ...             ...            ...  \n",
              "203764           NaN             NaN            NaN  \n",
              "203765           NaN             NaN            NaN  \n",
              "203766           NaN             NaN            NaN  \n",
              "203767           NaN             NaN            NaN  \n",
              "203768           NaN             NaN            NaN  \n",
              "\n",
              "[203769 rows x 184 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-c00063ae-35bb-4adf-8b2f-f7a6d2444a13\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>Time step</th>\n",
              "      <th>Local_feature_1</th>\n",
              "      <th>Local_feature_2</th>\n",
              "      <th>Local_feature_3</th>\n",
              "      <th>Local_feature_4</th>\n",
              "      <th>Local_feature_5</th>\n",
              "      <th>Local_feature_6</th>\n",
              "      <th>Local_feature_7</th>\n",
              "      <th>Local_feature_8</th>\n",
              "      <th>...</th>\n",
              "      <th>in_BTC_min</th>\n",
              "      <th>in_BTC_max</th>\n",
              "      <th>in_BTC_mean</th>\n",
              "      <th>in_BTC_median</th>\n",
              "      <th>in_BTC_total</th>\n",
              "      <th>out_BTC_min</th>\n",
              "      <th>out_BTC_max</th>\n",
              "      <th>out_BTC_mean</th>\n",
              "      <th>out_BTC_median</th>\n",
              "      <th>out_BTC_total</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>3321</td>\n",
              "      <td>1</td>\n",
              "      <td>-0.169615</td>\n",
              "      <td>-0.184668</td>\n",
              "      <td>-1.201369</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.160199</td>\n",
              "      <td>...</td>\n",
              "      <td>0.534072</td>\n",
              "      <td>0.534072</td>\n",
              "      <td>0.534072</td>\n",
              "      <td>0.534072</td>\n",
              "      <td>0.534072</td>\n",
              "      <td>1.668990e-01</td>\n",
              "      <td>0.367074</td>\n",
              "      <td>0.266986</td>\n",
              "      <td>0.266986</td>\n",
              "      <td>0.533972</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>11108</td>\n",
              "      <td>1</td>\n",
              "      <td>-0.137586</td>\n",
              "      <td>-0.184668</td>\n",
              "      <td>-1.201369</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.127429</td>\n",
              "      <td>...</td>\n",
              "      <td>5.611878</td>\n",
              "      <td>5.611878</td>\n",
              "      <td>5.611878</td>\n",
              "      <td>5.611878</td>\n",
              "      <td>5.611878</td>\n",
              "      <td>5.861940e-01</td>\n",
              "      <td>5.025584</td>\n",
              "      <td>2.805889</td>\n",
              "      <td>2.805889</td>\n",
              "      <td>5.611778</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>51816</td>\n",
              "      <td>1</td>\n",
              "      <td>-0.170103</td>\n",
              "      <td>-0.184668</td>\n",
              "      <td>-1.201369</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.160699</td>\n",
              "      <td>...</td>\n",
              "      <td>0.456608</td>\n",
              "      <td>0.456608</td>\n",
              "      <td>0.456608</td>\n",
              "      <td>0.456608</td>\n",
              "      <td>0.456608</td>\n",
              "      <td>2.279902e-01</td>\n",
              "      <td>0.228518</td>\n",
              "      <td>0.228254</td>\n",
              "      <td>0.228254</td>\n",
              "      <td>0.456508</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>68869</td>\n",
              "      <td>1</td>\n",
              "      <td>-0.114267</td>\n",
              "      <td>-0.184668</td>\n",
              "      <td>-1.201369</td>\n",
              "      <td>0.028105</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>0.547008</td>\n",
              "      <td>-0.161652</td>\n",
              "      <td>...</td>\n",
              "      <td>0.308900</td>\n",
              "      <td>8.000000</td>\n",
              "      <td>3.102967</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>9.308900</td>\n",
              "      <td>1.229000e+00</td>\n",
              "      <td>8.079800</td>\n",
              "      <td>4.654400</td>\n",
              "      <td>4.654400</td>\n",
              "      <td>9.308800</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>89273</td>\n",
              "      <td>1</td>\n",
              "      <td>5.202107</td>\n",
              "      <td>-0.210553</td>\n",
              "      <td>-1.756361</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>260.090707</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>5.335864</td>\n",
              "      <td>...</td>\n",
              "      <td>852.164680</td>\n",
              "      <td>852.164680</td>\n",
              "      <td>852.164680</td>\n",
              "      <td>852.164680</td>\n",
              "      <td>852.164680</td>\n",
              "      <td>1.300000e-07</td>\n",
              "      <td>41.264036</td>\n",
              "      <td>0.065016</td>\n",
              "      <td>0.000441</td>\n",
              "      <td>852.164680</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203764</th>\n",
              "      <td>158304003</td>\n",
              "      <td>49</td>\n",
              "      <td>-0.165622</td>\n",
              "      <td>-0.139563</td>\n",
              "      <td>1.018602</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.156113</td>\n",
              "      <td>...</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203765</th>\n",
              "      <td>158303998</td>\n",
              "      <td>49</td>\n",
              "      <td>-0.167040</td>\n",
              "      <td>-0.139563</td>\n",
              "      <td>1.018602</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.157564</td>\n",
              "      <td>...</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203766</th>\n",
              "      <td>158303966</td>\n",
              "      <td>49</td>\n",
              "      <td>-0.167040</td>\n",
              "      <td>-0.139563</td>\n",
              "      <td>1.018602</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.157564</td>\n",
              "      <td>...</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203767</th>\n",
              "      <td>161526077</td>\n",
              "      <td>49</td>\n",
              "      <td>-0.172212</td>\n",
              "      <td>-0.139573</td>\n",
              "      <td>1.018602</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.162856</td>\n",
              "      <td>...</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203768</th>\n",
              "      <td>194103537</td>\n",
              "      <td>49</td>\n",
              "      <td>-0.172212</td>\n",
              "      <td>-0.139573</td>\n",
              "      <td>1.018602</td>\n",
              "      <td>-0.121970</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.162856</td>\n",
              "      <td>...</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>203769 rows × 184 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c00063ae-35bb-4adf-8b2f-f7a6d2444a13')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-c00063ae-35bb-4adf-8b2f-f7a6d2444a13 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-c00063ae-35bb-4adf-8b2f-f7a6d2444a13');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 4
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Transaction classes: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId  class\n",
              "0            3321      3\n",
              "1           11108      3\n",
              "2           51816      3\n",
              "3           68869      2\n",
              "4           89273      2\n",
              "...           ...    ...\n",
              "203764  158304003      3\n",
              "203765  158303998      3\n",
              "203766  158303966      3\n",
              "203767  161526077      3\n",
              "203768  194103537      3\n",
              "\n",
              "[203769 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-7125e9e5-264a-400b-8350-964e714cea46\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>class</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>3321</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>11108</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>51816</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>68869</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>89273</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203764</th>\n",
              "      <td>158304003</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203765</th>\n",
              "      <td>158303998</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203766</th>\n",
              "      <td>158303966</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203767</th>\n",
              "      <td>161526077</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>203768</th>\n",
              "      <td>194103537</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>203769 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7125e9e5-264a-400b-8350-964e714cea46')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-7125e9e5-264a-400b-8350-964e714cea46 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-7125e9e5-264a-400b-8350-964e714cea46');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 4
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Transaction-Transaction edgelist: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "            txId1      txId2\n",
              "0       230425980    5530458\n",
              "1       232022460  232438397\n",
              "2       230460314  230459870\n",
              "3       230333930  230595899\n",
              "4       232013274  232029206\n",
              "...           ...        ...\n",
              "234350  158365409  157930723\n",
              "234351  188708874  188708879\n",
              "234352  157659064  157659046\n",
              "234353   87414554  106877725\n",
              "234354  158589452  158589457\n",
              "\n",
              "[234355 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-d1f1b9a8-013d-41b2-9b4c-e8badcdcad74\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId1</th>\n",
              "      <th>txId2</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>230425980</td>\n",
              "      <td>5530458</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>232022460</td>\n",
              "      <td>232438397</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>230460314</td>\n",
              "      <td>230459870</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>230333930</td>\n",
              "      <td>230595899</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>232013274</td>\n",
              "      <td>232029206</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>234350</th>\n",
              "      <td>158365409</td>\n",
              "      <td>157930723</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>234351</th>\n",
              "      <td>188708874</td>\n",
              "      <td>188708879</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>234352</th>\n",
              "      <td>157659064</td>\n",
              "      <td>157659046</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>234353</th>\n",
              "      <td>87414554</td>\n",
              "      <td>106877725</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>234354</th>\n",
              "      <td>158589452</td>\n",
              "      <td>158589457</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>234355 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d1f1b9a8-013d-41b2-9b4c-e8badcdcad74')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-d1f1b9a8-013d-41b2-9b4c-e8badcdcad74 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-d1f1b9a8-013d-41b2-9b4c-e8badcdcad74');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Data structure for an example transaction (txId = 272145560):"
      ],
      "metadata": {
        "id": "5Qw43a6xe9rN"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"\\ntxs_features.csv for txId = 272145560\\n\")\n",
        "df_txs_features[df_txs_features['txId']==272145560]\n",
        "\n",
        "print(\"\\ntxs_classes.csv for txId = 272145560\\n\")\n",
        "df_txs_classes[df_txs_classes['txId']==272145560]\n",
        "\n",
        "print(\"\\ntxs_edgelist.csv for txId = 272145560\\n\")\n",
        "df_txs_edgelist[(df_txs_edgelist['txId1']==272145560) | (df_txs_edgelist['txId2']==272145560)]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 543
        },
        "id": "BHp9b7S1e1-F",
        "outputId": "757d6c2d-3c51-49f6-d0eb-2d701b52fc78"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "txs_features.csv for txId=272145560\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId  Time step  Local_feature_1  Local_feature_2  \\\n",
              "105573  272145560         24        -0.155493        -0.107012   \n",
              "\n",
              "        Local_feature_3  Local_feature_4  Local_feature_5  Local_feature_6  \\\n",
              "105573        -1.201369         -0.12197        -0.043875        -0.113002   \n",
              "\n",
              "        Local_feature_7  Local_feature_8  ...  in_BTC_min  in_BTC_max  \\\n",
              "105573        -0.061584        -0.145749  ...      2.7732      2.7732   \n",
              "\n",
              "        in_BTC_mean  in_BTC_median  in_BTC_total  out_BTC_min  out_BTC_max  \\\n",
              "105573       2.7732         2.7732        2.7732     0.001917     2.770883   \n",
              "\n",
              "        out_BTC_mean  out_BTC_median  out_BTC_total  \n",
              "105573        1.3864          1.3864         2.7728  \n",
              "\n",
              "[1 rows x 184 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-d4c2c7c9-5a47-4c7b-88df-ca4a880bf464\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>Time step</th>\n",
              "      <th>Local_feature_1</th>\n",
              "      <th>Local_feature_2</th>\n",
              "      <th>Local_feature_3</th>\n",
              "      <th>Local_feature_4</th>\n",
              "      <th>Local_feature_5</th>\n",
              "      <th>Local_feature_6</th>\n",
              "      <th>Local_feature_7</th>\n",
              "      <th>Local_feature_8</th>\n",
              "      <th>...</th>\n",
              "      <th>in_BTC_min</th>\n",
              "      <th>in_BTC_max</th>\n",
              "      <th>in_BTC_mean</th>\n",
              "      <th>in_BTC_median</th>\n",
              "      <th>in_BTC_total</th>\n",
              "      <th>out_BTC_min</th>\n",
              "      <th>out_BTC_max</th>\n",
              "      <th>out_BTC_mean</th>\n",
              "      <th>out_BTC_median</th>\n",
              "      <th>out_BTC_total</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>105573</th>\n",
              "      <td>272145560</td>\n",
              "      <td>24</td>\n",
              "      <td>-0.155493</td>\n",
              "      <td>-0.107012</td>\n",
              "      <td>-1.201369</td>\n",
              "      <td>-0.12197</td>\n",
              "      <td>-0.043875</td>\n",
              "      <td>-0.113002</td>\n",
              "      <td>-0.061584</td>\n",
              "      <td>-0.145749</td>\n",
              "      <td>...</td>\n",
              "      <td>2.7732</td>\n",
              "      <td>2.7732</td>\n",
              "      <td>2.7732</td>\n",
              "      <td>2.7732</td>\n",
              "      <td>2.7732</td>\n",
              "      <td>0.001917</td>\n",
              "      <td>2.770883</td>\n",
              "      <td>1.3864</td>\n",
              "      <td>1.3864</td>\n",
              "      <td>2.7728</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>1 rows × 184 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d4c2c7c9-5a47-4c7b-88df-ca4a880bf464')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-d4c2c7c9-5a47-4c7b-88df-ca4a880bf464 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-d4c2c7c9-5a47-4c7b-88df-ca4a880bf464');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 5
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "txs_classes.csv for txId=272145560\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId  class\n",
              "105573  272145560      1"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-2cb80618-7e36-43e1-bc3a-7916574c7b0d\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>class</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>105573</th>\n",
              "      <td>272145560</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2cb80618-7e36-43e1-bc3a-7916574c7b0d')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-2cb80618-7e36-43e1-bc3a-7916574c7b0d button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-2cb80618-7e36-43e1-bc3a-7916574c7b0d');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 5
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "txs_edgelist.csv for txId=272145560\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "            txId1      txId2\n",
              "123072  272145560  296926618\n",
              "123272  272145560  272145556\n",
              "125873  299475624  272145560"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-80dae61b-ee8e-4b72-a243-d2516eb56b84\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId1</th>\n",
              "      <th>txId2</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>123072</th>\n",
              "      <td>272145560</td>\n",
              "      <td>296926618</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>123272</th>\n",
              "      <td>272145560</td>\n",
              "      <td>272145556</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>125873</th>\n",
              "      <td>299475624</td>\n",
              "      <td>272145560</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-80dae61b-ee8e-4b72-a243-d2516eb56b84')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-80dae61b-ee8e-4b72-a243-d2516eb56b84 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-80dae61b-ee8e-4b72-a243-d2516eb56b84');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "\n",
        "Transaction features --- 94 local features, 72 aggregate features, 17 augmented features:\n"
      ],
      "metadata": {
        "id": "moS6bxoLg1Pk"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "list(df_txs_features.columns)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RpljxgT7k49T",
        "outputId": "916b4dda-11d6-4f92-f10d-3d7040f10ea8"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['txId',\n",
              " 'Time step',\n",
              " 'class',\n",
              " 'Local_feature_1',\n",
              " 'Local_feature_2',\n",
              " 'Local_feature_3',\n",
              " 'Local_feature_4',\n",
              " 'Local_feature_5',\n",
              " 'Local_feature_6',\n",
              " 'Local_feature_7',\n",
              " 'Local_feature_8',\n",
              " 'Local_feature_9',\n",
              " 'Local_feature_10',\n",
              " 'Local_feature_11',\n",
              " 'Local_feature_12',\n",
              " 'Local_feature_13',\n",
              " 'Local_feature_14',\n",
              " 'Local_feature_15',\n",
              " 'Local_feature_16',\n",
              " 'Local_feature_17',\n",
              " 'Local_feature_18',\n",
              " 'Local_feature_19',\n",
              " 'Local_feature_20',\n",
              " 'Local_feature_21',\n",
              " 'Local_feature_22',\n",
              " 'Local_feature_23',\n",
              " 'Local_feature_24',\n",
              " 'Local_feature_25',\n",
              " 'Local_feature_26',\n",
              " 'Local_feature_27',\n",
              " 'Local_feature_28',\n",
              " 'Local_feature_29',\n",
              " 'Local_feature_30',\n",
              " 'Local_feature_31',\n",
              " 'Local_feature_32',\n",
              " 'Local_feature_33',\n",
              " 'Local_feature_34',\n",
              " 'Local_feature_35',\n",
              " 'Local_feature_36',\n",
              " 'Local_feature_37',\n",
              " 'Local_feature_38',\n",
              " 'Local_feature_39',\n",
              " 'Local_feature_40',\n",
              " 'Local_feature_41',\n",
              " 'Local_feature_42',\n",
              " 'Local_feature_43',\n",
              " 'Local_feature_44',\n",
              " 'Local_feature_45',\n",
              " 'Local_feature_46',\n",
              " 'Local_feature_47',\n",
              " 'Local_feature_48',\n",
              " 'Local_feature_49',\n",
              " 'Local_feature_50',\n",
              " 'Local_feature_51',\n",
              " 'Local_feature_52',\n",
              " 'Local_feature_53',\n",
              " 'Local_feature_54',\n",
              " 'Local_feature_55',\n",
              " 'Local_feature_56',\n",
              " 'Local_feature_57',\n",
              " 'Local_feature_58',\n",
              " 'Local_feature_59',\n",
              " 'Local_feature_60',\n",
              " 'Local_feature_61',\n",
              " 'Local_feature_62',\n",
              " 'Local_feature_63',\n",
              " 'Local_feature_64',\n",
              " 'Local_feature_65',\n",
              " 'Local_feature_66',\n",
              " 'Local_feature_67',\n",
              " 'Local_feature_68',\n",
              " 'Local_feature_69',\n",
              " 'Local_feature_70',\n",
              " 'Local_feature_71',\n",
              " 'Local_feature_72',\n",
              " 'Local_feature_73',\n",
              " 'Local_feature_74',\n",
              " 'Local_feature_75',\n",
              " 'Local_feature_76',\n",
              " 'Local_feature_77',\n",
              " 'Local_feature_78',\n",
              " 'Local_feature_79',\n",
              " 'Local_feature_80',\n",
              " 'Local_feature_81',\n",
              " 'Local_feature_82',\n",
              " 'Local_feature_83',\n",
              " 'Local_feature_84',\n",
              " 'Local_feature_85',\n",
              " 'Local_feature_86',\n",
              " 'Local_feature_87',\n",
              " 'Local_feature_88',\n",
              " 'Local_feature_89',\n",
              " 'Local_feature_90',\n",
              " 'Local_feature_91',\n",
              " 'Local_feature_92',\n",
              " 'Local_feature_93',\n",
              " 'Aggregate_feature_1',\n",
              " 'Aggregate_feature_2',\n",
              " 'Aggregate_feature_3',\n",
              " 'Aggregate_feature_4',\n",
              " 'Aggregate_feature_5',\n",
              " 'Aggregate_feature_6',\n",
              " 'Aggregate_feature_7',\n",
              " 'Aggregate_feature_8',\n",
              " 'Aggregate_feature_9',\n",
              " 'Aggregate_feature_10',\n",
              " 'Aggregate_feature_11',\n",
              " 'Aggregate_feature_12',\n",
              " 'Aggregate_feature_13',\n",
              " 'Aggregate_feature_14',\n",
              " 'Aggregate_feature_15',\n",
              " 'Aggregate_feature_16',\n",
              " 'Aggregate_feature_17',\n",
              " 'Aggregate_feature_18',\n",
              " 'Aggregate_feature_19',\n",
              " 'Aggregate_feature_20',\n",
              " 'Aggregate_feature_21',\n",
              " 'Aggregate_feature_22',\n",
              " 'Aggregate_feature_23',\n",
              " 'Aggregate_feature_24',\n",
              " 'Aggregate_feature_25',\n",
              " 'Aggregate_feature_26',\n",
              " 'Aggregate_feature_27',\n",
              " 'Aggregate_feature_28',\n",
              " 'Aggregate_feature_29',\n",
              " 'Aggregate_feature_30',\n",
              " 'Aggregate_feature_31',\n",
              " 'Aggregate_feature_32',\n",
              " 'Aggregate_feature_33',\n",
              " 'Aggregate_feature_34',\n",
              " 'Aggregate_feature_35',\n",
              " 'Aggregate_feature_36',\n",
              " 'Aggregate_feature_37',\n",
              " 'Aggregate_feature_38',\n",
              " 'Aggregate_feature_39',\n",
              " 'Aggregate_feature_40',\n",
              " 'Aggregate_feature_41',\n",
              " 'Aggregate_feature_42',\n",
              " 'Aggregate_feature_43',\n",
              " 'Aggregate_feature_44',\n",
              " 'Aggregate_feature_45',\n",
              " 'Aggregate_feature_46',\n",
              " 'Aggregate_feature_47',\n",
              " 'Aggregate_feature_48',\n",
              " 'Aggregate_feature_49',\n",
              " 'Aggregate_feature_50',\n",
              " 'Aggregate_feature_51',\n",
              " 'Aggregate_feature_52',\n",
              " 'Aggregate_feature_53',\n",
              " 'Aggregate_feature_54',\n",
              " 'Aggregate_feature_55',\n",
              " 'Aggregate_feature_56',\n",
              " 'Aggregate_feature_57',\n",
              " 'Aggregate_feature_58',\n",
              " 'Aggregate_feature_59',\n",
              " 'Aggregate_feature_60',\n",
              " 'Aggregate_feature_61',\n",
              " 'Aggregate_feature_62',\n",
              " 'Aggregate_feature_63',\n",
              " 'Aggregate_feature_64',\n",
              " 'Aggregate_feature_65',\n",
              " 'Aggregate_feature_66',\n",
              " 'Aggregate_feature_67',\n",
              " 'Aggregate_feature_68',\n",
              " 'Aggregate_feature_69',\n",
              " 'Aggregate_feature_70',\n",
              " 'Aggregate_feature_71',\n",
              " 'Aggregate_feature_72',\n",
              " 'in_txs_degree',\n",
              " 'out_txs_degree',\n",
              " 'total_BTC',\n",
              " 'fees',\n",
              " 'size',\n",
              " 'num_input_addresses',\n",
              " 'num_output_addresses',\n",
              " 'in_BTC_min',\n",
              " 'in_BTC_max',\n",
              " 'in_BTC_mean',\n",
              " 'in_BTC_median',\n",
              " 'in_BTC_total',\n",
              " 'out_BTC_min',\n",
              " 'out_BTC_max',\n",
              " 'out_BTC_mean',\n",
              " 'out_BTC_median',\n",
              " 'out_BTC_total']"
            ]
          },
          "metadata": {},
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "1-J38vk9fKfg"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Feature Analysis\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section analyzes features using scikit learn feature importances, permutation feature importance, and drop column feature importance."
      ],
      "metadata": {
        "id": "0p7g5U6R3xGp"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "RF.feature_importances_:"
      ],
      "metadata": {
        "id": "7WQUMNaB4FrF"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "imp_df = pd.DataFrame({\n",
        "    \"Feature\": X_train.columns,\n",
        "    \"Imp\": cRF.feature_importances_\n",
        "})\n",
        "imp_df.sort_values(by=\"Imp\", ascending=False)\n",
        "imp_df_sorted = imp_df.sort_values(by=\"Imp\", ascending=False)\n",
        "imp_df_sorted"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 424
        },
        "outputId": "fb194d3a-94d3-410b-abf7-368708bbcced",
        "id": "3jQTFSfTrAfF"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "              Feature       Imp\n",
              "52   Local_feature_53  0.057675\n",
              "54   Local_feature_55  0.041891\n",
              "169              size  0.041139\n",
              "46   Local_feature_47  0.035689\n",
              "75   Local_feature_76  0.034637\n",
              "..                ...       ...\n",
              "37   Local_feature_38  0.000128\n",
              "38   Local_feature_39  0.000124\n",
              "6     Local_feature_7  0.000080\n",
              "69   Local_feature_70  0.000067\n",
              "14   Local_feature_15  0.000006\n",
              "\n",
              "[182 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-98814eff-f9a7-464c-b5a5-8c3fda126f83\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Feature</th>\n",
              "      <th>Imp</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>52</th>\n",
              "      <td>Local_feature_53</td>\n",
              "      <td>0.057675</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>54</th>\n",
              "      <td>Local_feature_55</td>\n",
              "      <td>0.041891</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>169</th>\n",
              "      <td>size</td>\n",
              "      <td>0.041139</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>46</th>\n",
              "      <td>Local_feature_47</td>\n",
              "      <td>0.035689</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75</th>\n",
              "      <td>Local_feature_76</td>\n",
              "      <td>0.034637</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>37</th>\n",
              "      <td>Local_feature_38</td>\n",
              "      <td>0.000128</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>38</th>\n",
              "      <td>Local_feature_39</td>\n",
              "      <td>0.000124</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Local_feature_7</td>\n",
              "      <td>0.000080</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>69</th>\n",
              "      <td>Local_feature_70</td>\n",
              "      <td>0.000067</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Local_feature_15</td>\n",
              "      <td>0.000006</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>182 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-98814eff-f9a7-464c-b5a5-8c3fda126f83')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-98814eff-f9a7-464c-b5a5-8c3fda126f83 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-98814eff-f9a7-464c-b5a5-8c3fda126f83');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 129
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Top 20 and Bottom 20 features:"
      ],
      "metadata": {
        "id": "OJknTiei4P2c"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# top 20 features\n",
        "plt.figure(figsize=(10,10))\n",
        "imp_df_sorted[:20].iloc[::-1].plot(kind='barh',y='Imp',x='Feature',color='r')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 301
        },
        "outputId": "85dd6432-2345-4bf3-e76f-c471b7190043",
        "id": "ESkHTa11rAfH"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f626fabbc70>"
            ]
          },
          "metadata": {},
          "execution_count": 132
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# bottom 20 features\n",
        "plt.figure(figsize=(10,10))\n",
        "imp_df_sorted[162:].iloc[::-1].plot(kind='barh',y='Imp',x='Feature',color='r')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 301
        },
        "id": "ThNvUWZor_bh",
        "outputId": "0a8b615e-7be5-4618-bbb3-0e47d4988e5d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f6270193520>"
            ]
          },
          "metadata": {},
          "execution_count": 135
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Permutation feature importance:"
      ],
      "metadata": {
        "id": "GJ9GWms94bzl"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "perm = PermutationImportance(cRF, random_state=1).fit(X_train.values, y_train.values)\n",
        "eli5.show_weights(perm, feature_names = X_train.columns.tolist())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 399
        },
        "id": "TBpICSAZvFly",
        "outputId": "3270ad6a-2465-42dd-c804-a70cf1cdb294"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "    <style>\n",
              "    table.eli5-weights tr:hover {\n",
              "        filter: brightness(85%);\n",
              "    }\n",
              "</style>\n",
              "\n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "        <table class=\"eli5-weights eli5-feature-importances\" style=\"border-collapse: collapse; border: none; margin-top: 0em; table-layout: auto;\">\n",
              "    <thead>\n",
              "    <tr style=\"border: none;\">\n",
              "        <th style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">Weight</th>\n",
              "        <th style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">Feature</th>\n",
              "    </tr>\n",
              "    </thead>\n",
              "    <tbody>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 80.00%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0276\n",
              "                \n",
              "                    &plusmn; 0.0013\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_53\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 89.63%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0108\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_55\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 93.19%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0059\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_81\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 93.63%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0054\n",
              "                \n",
              "                    &plusmn; 0.0004\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_2\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 95.97%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0028\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_76\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 96.04%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0027\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Aggregate_feature_70\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 96.51%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0023\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_43\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 96.97%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0019\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_14\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.01%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0018\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_47\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.08%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0018\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Aggregate_feature_67\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.19%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0017\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_5\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.23%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0016\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_41\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.37%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0015\n",
              "                \n",
              "                    &plusmn; 0.0004\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_49\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.45%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0015\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_10\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.57%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0014\n",
              "                \n",
              "                    &plusmn; 0.0005\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_48\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.58%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0014\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_52\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.59%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0013\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_60\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.62%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0013\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_89\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.76%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0012\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Aggregate_feature_61\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.83%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0012\n",
              "                \n",
              "                    &plusmn; 0.0003\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                Local_feature_3\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "    \n",
              "        \n",
              "            <tr style=\"background-color: hsl(120, 100.00%, 97.83%); border: none;\">\n",
              "                <td colspan=\"2\" style=\"padding: 0 0.5em 0 0.5em; text-align: center; border: none; white-space: nowrap;\">\n",
              "                    <i>&hellip; 162 more &hellip;</i>\n",
              "                </td>\n",
              "            </tr>\n",
              "        \n",
              "    \n",
              "    </tbody>\n",
              "</table>\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "\n"
            ]
          },
          "metadata": {},
          "execution_count": 152
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Drop column feature importance:"
      ],
      "metadata": {
        "id": "7BsujnFC5HNk"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "model = cRF\n",
        "X_train = X_train\n",
        "y_train = y_train\n",
        "random_state = 42\n",
        "\n",
        "# clone the model to have the exact same specification as the one initially trained\n",
        "model_clone = clone(model)\n",
        "# set random_state for comparability\n",
        "model_clone.random_state = random_state\n",
        "# training and scoring the benchmark model\n",
        "model_clone.fit(X_train.values, y_train.values)\n",
        "benchmark_score = model_clone.score(X_train.values, y_train.values)\n",
        "# list for storing feature importances\n",
        "importances = []\n",
        "\n",
        "# iterating over all columns and storing feature importance (difference between benchmark and new model)\n",
        "for col in X_train.columns:\n",
        "    model_clone = clone(model)\n",
        "    model_clone.random_state = random_state\n",
        "    model_clone.fit(X_train.drop(col, axis = 1).values, y_train.values)\n",
        "    drop_col_score = model_clone.score(X_train.drop(col, axis = 1).values, y_train.values)\n",
        "    importances.append(benchmark_score - drop_col_score)\n",
        "\n",
        "importances_df = pd.DataFrame (X_train.columns, importances)\n",
        "get_drop_importance = importances_df"
      ],
      "metadata": {
        "id": "s96_VBV_5ZTY"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "get_drop_importance.reset_index(inplace=True)\n",
        "get_drop_importance = get_drop_importance.rename(columns = {'index':'Imp', 0:'Feature'})\n",
        "get_drop_importance = get_drop_importance.sort_values('Imp', ascending=False)\n",
        "get_drop_importance"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 424
        },
        "id": "Djp_w0ZsKERY",
        "outputId": "be29487d-bbe4-4953-e3a4-ef0d1042eda9"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "          Imp           Feature\n",
              "86   0.000034  Local_feature_87\n",
              "43   0.000034  Local_feature_44\n",
              "28   0.000034  Local_feature_29\n",
              "85   0.000034  Local_feature_86\n",
              "33   0.000034  Local_feature_34\n",
              "..        ...               ...\n",
              "73  -0.000034  Local_feature_74\n",
              "71  -0.000034  Local_feature_72\n",
              "70  -0.000034  Local_feature_71\n",
              "69  -0.000034  Local_feature_70\n",
              "181 -0.000034     out_BTC_total\n",
              "\n",
              "[182 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-901f7a41-4a8f-4369-91dd-1b0e560e0d3b\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Imp</th>\n",
              "      <th>Feature</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>86</th>\n",
              "      <td>0.000034</td>\n",
              "      <td>Local_feature_87</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43</th>\n",
              "      <td>0.000034</td>\n",
              "      <td>Local_feature_44</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>0.000034</td>\n",
              "      <td>Local_feature_29</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>85</th>\n",
              "      <td>0.000034</td>\n",
              "      <td>Local_feature_86</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>0.000034</td>\n",
              "      <td>Local_feature_34</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>73</th>\n",
              "      <td>-0.000034</td>\n",
              "      <td>Local_feature_74</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>71</th>\n",
              "      <td>-0.000034</td>\n",
              "      <td>Local_feature_72</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>70</th>\n",
              "      <td>-0.000034</td>\n",
              "      <td>Local_feature_71</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>69</th>\n",
              "      <td>-0.000034</td>\n",
              "      <td>Local_feature_70</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>181</th>\n",
              "      <td>-0.000034</td>\n",
              "      <td>out_BTC_total</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>182 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-901f7a41-4a8f-4369-91dd-1b0e560e0d3b')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-901f7a41-4a8f-4369-91dd-1b0e560e0d3b button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-901f7a41-4a8f-4369-91dd-1b0e560e0d3b');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 271
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "hsezkLy5ao4h"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## RF Trees Analysis\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section explores the voting of all 50 RF trees for transactions in the testing set."
      ],
      "metadata": {
        "id": "Z6N7Zznvapf0"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Analysis on RF tree voting can show the effect of increased classification accuracy after selecting important features. Refer to the paper to see the before and after effects of selecting features on the RF tree voting (Figure 12a)."
      ],
      "metadata": {
        "id": "E1yCuBkUcRSn"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Visualizing the features making up each of the 50 RF trees (there are many trees as we don't set a limit of number of features per tree, but for easier analysis the number of features per tree can be limited):"
      ],
      "metadata": {
        "id": "mlR-cfjZdiNa"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "n=0\n",
        "while n < 50:\n",
        "    classes = ['0','1']\n",
        "    fig = plt.figure(figsize=(50, 50))\n",
        "    plot_tree(cRF.estimators_[n], class_names=classes, filled=True, impurity=True, rounded=True)\n",
        "    n+=1"
      ],
      "metadata": {
        "id": "bKyTU8c9-HFF"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Look at individual RF tree votes for a transaction. Change the \"sample_id\" below for the index of the transaction in the testing set:"
      ],
      "metadata": {
        "id": "pMAtcpeCgr4c"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "estimator = cRF\n",
        "\n",
        "n_nodes_ = [t.tree_.node_count for t in estimator.estimators_]\n",
        "children_left_ = [t.tree_.children_left for t in estimator.estimators_]\n",
        "children_right_ = [t.tree_.children_right for t in estimator.estimators_]\n",
        "feature_ = [t.tree_.feature for t in estimator.estimators_]\n",
        "threshold_ = [t.tree_.threshold for t in estimator.estimators_]\n",
        "\n",
        "\n",
        "def explore_tree(estimator, n_nodes, children_left,children_right, feature,threshold,\n",
        "                suffix='', print_tree= False, sample_id=0, feature_names=None):\n",
        "\n",
        "    if not feature_names:\n",
        "        feature_names = feature\n",
        "\n",
        "    # The tree structure can be traversed to compute various properties such\n",
        "    # as the depth of each node and whether or not it is a leaf.\n",
        "    node_depth = np.zeros(shape=n_nodes, dtype=np.int64)\n",
        "    is_leaves = np.zeros(shape=n_nodes, dtype=bool)\n",
        "\n",
        "    stack = [(0, -1)]  # seed is the root node id and its parent depth\n",
        "    while len(stack) > 0:\n",
        "        node_id, parent_depth = stack.pop()\n",
        "        node_depth[node_id] = parent_depth + 1\n",
        "\n",
        "        # If we have a test node\n",
        "        if (children_left[node_id] != children_right[node_id]):\n",
        "            stack.append((children_left[node_id], parent_depth + 1))\n",
        "            stack.append((children_right[node_id], parent_depth + 1))\n",
        "        else:\n",
        "            is_leaves[node_id] = True\n",
        "\n",
        "    # First let's retrieve the decision path of each sample. The decision_path\n",
        "    # method allows to retrieve the node indicator functions. A non zero element of\n",
        "    # indicator matrix at the position (i, j) indicates that the sample i goes\n",
        "    # through the node j.\n",
        "\n",
        "    node_indicator = estimator.decision_path(X_test.values)\n",
        "\n",
        "    # Similarly, we can also have the leaves ids reached by each sample.\n",
        "\n",
        "    leave_id = estimator.apply(X_test.values)\n",
        "\n",
        "    # Now, it's possible to get the tests that were used to predict a sample or\n",
        "    # a group of samples. First, let's make it for the sample.\n",
        "\n",
        "    node_index = node_indicator.indices[node_indicator.indptr[sample_id]:\n",
        "                                        node_indicator.indptr[sample_id + 1]]\n",
        "\n",
        "    for node_id in node_index:\n",
        "        tabulation = \"\"\n",
        "\n",
        "        if (X_test.values[sample_id, feature[node_id]] <= threshold[node_id]):\n",
        "            threshold_sign = \"<=\"\n",
        "        else:\n",
        "            threshold_sign = \">\"\n",
        "\n",
        "    print(\"%sPrediction for sample %d: %s\"%(tabulation,\n",
        "                                          sample_id,\n",
        "                                          estimator.predict(X_test.values)[sample_id]))\n",
        "\n",
        "    # For a group of samples, we have the following common node.\n",
        "    sample_ids = [sample_id, 1]\n",
        "    common_nodes = (node_indicator.toarray()[sample_ids].sum(axis=0) ==\n",
        "                    len(sample_ids))\n",
        "\n",
        "    common_node_id = np.arange(n_nodes)[common_nodes]\n",
        "\n",
        "    for sample_id_ in sample_ids:\n",
        "        print(\"Prediction for sample %d: %s\"%(sample_id_,\n",
        "                                          estimator.predict(X_test.values)[sample_id_]))\n",
        "        \n",
        "for i,e in enumerate(estimator.estimators_):\n",
        "\n",
        "    print(\"Tree %d\\n\"%i)\n",
        "    explore_tree(estimator.estimators_[i],n_nodes_[i],children_left_[i],\n",
        "                 children_right_[i], feature_[i],threshold_[i],\n",
        "                suffix=i, sample_id=11983, feature_names=list(df_features.columns)[2:])\n",
        "    print('\\n'*2)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "YVTWTj9tutEO",
        "outputId": "31f06503-2fda-43d9-a35f-685079ba2f06"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tree 0\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 1\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 2\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 3\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 4\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 5\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 6\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 7\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 8\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 9\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 10\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 11\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 12\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 13\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 14\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 15\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 16\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 17\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 18\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 19\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 20\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 21\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 22\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 23\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 24\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 25\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 26\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 27\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 28\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 29\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 30\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 31\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 32\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 33\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 34\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 35\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 36\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 37\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 38\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 39\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 40\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 41\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 42\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 43\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 44\n",
            "\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 11983: 1.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 45\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 46\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 47\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 48\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n",
            "Tree 49\n",
            "\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 11983: 0.0\n",
            "Prediction for sample 1: 0.0\n",
            "\n",
            "\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "l0HuhbLX4UAI"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# **Acknowledgements**\n",
        "\n",
        "\n",
        "---\n",
        "---\n",
        "\n",
        "\n",
        "Released by: Youssef Elmougy, Ling Liu\n",
        "\n",
        "\n",
        "\n",
        "School of Computer Science, Georgia Institute of Technology\n",
        "\n",
        "Contact: yelmougy3@gatech.edu\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "Github Repository: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)\n",
        "\n",
        "\n",
        "If you use our dataset in your work, please cite our paper:\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        ">> Youssef Elmougy and Ling Liu. 2023. Demystifying Fraudulent Transactions and Illicit Nodes in the Bitcoin Network for Financial Forensics.\n",
        "\n",
        "---\n",
        "\n"
      ],
      "metadata": {
        "id": "BwrFHYfy5hrz"
      }
    }
  ]
}